/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.edu.senaclem.sael.vista;

import co.edu.senaclem.aspera.vista.*;
import co.edu.senaclem.logica.AprendizLogicaLocal;
import co.edu.senaclem.logica.ComiteLogica;
import co.edu.senaclem.logica.ComiteLogicaLocal;
import co.edu.senaclem.logica.FichaLogicaLocal;
import co.edu.senaclem.logica.NovedadLogicaLocal;
import co.edu.senaclem.logica.PersonalLogicaLocal;
import co.edu.senaclem.logica.SeguimientoAprendizLogicaLocal;
import co.edu.senaclem.logica.SeguimientoLogicaLocal;
import co.edu.senaclem.logica.UsuariosLogicaLocal;
import co.edu.senaclem.modelo.Aprendiz;
import co.edu.senaclem.modelo.Comite;
import co.edu.senaclem.modelo.Novedad;
import co.edu.senaclem.modelo.Personal;
import co.edu.senaclem.modelo.Seguimiento;
import co.edu.senaclem.modelo.SeguimientoAprendiz;
import co.edu.senaclem.persistencia.ComiteDAO;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.component.calendar.Calendar;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.inputtextarea.InputTextarea;
import org.primefaces.component.selectonemenu.SelectOneMenu;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author DILOVE
 */
@ManagedBean(name = "gestionarSeguimientoVista")
@RequestScoped
public class AdelantarSeguimientoVista {
    
    @EJB
    private SeguimientoLogicaLocal seguimientoLogica;
    
    @EJB
    private PersonalLogicaLocal personalLogica;
    
    @EJB
    private ComiteLogicaLocal comiteLogica;
    
    @EJB
    private FichaLogicaLocal fichaLogica;
    
    @EJB
    private UsuariosLogicaLocal usuariosLogica;
    
    @EJB
    private NovedadLogicaLocal novedadLogica;
    
    @EJB
    private AprendizLogicaLocal aprendizLogica;
    
    @EJB
    private SeguimientoAprendizLogicaLocal seguimientoAprendizLogica;
    
    private InputText txtCodigo;
    private Calendar txtFecha;
    private Calendar txtHora;
    private InputText txtLugar;
    private InputText txtFicha;
    private InputText txtJornada;
    private InputTextarea txtPrograma;
    private InputTextarea txtFase;
    private InputTextarea txtCompetencias;
    private InputTextarea txtObservaciones;
    private SelectOneMenu cmbEstadoSeguimiento;
    private InputText txtDocumento;
    private InputText txtNombre;
    private InputText txtNombreCompleto;
    private InputText txtApellido;
    private InputTextarea txtRendimiento;
    private InputTextarea txtEstrategias;
    private SelectOneMenu cmbNovedad;
    private SelectOneMenu cmbCargo;
    private CommandButton btnModificar;
    private CommandButton btnLimpiar;
    private CommandButton btnModificarA;
    private CommandButton btnLimpiarA;
    private CommandButton btnRegistrarAsistente;
    private CommandButton btnRetirarAsistente;
    private CommandButton btnLimpiarAsistente;
    private CommandButton btnSeleccionarAsistente;
    private CommandButton btnFinalizarSeguimiento;
    private Seguimiento selectedSeguimiento;
    private ArrayList<SelectItem> itemsnovedades = null;
    private Aprendiz selectedAprendiz;
    private String codigoSeguimiento;
    private List<Seguimiento> listaSeguimientos = null;
    private List<Seguimiento> listaSeguimientosA = null;
    private List<Aprendiz> listaAprendices = null;
    private List<Comite> listaComite = null;
    private List<Personal> listaPersonal = null;
    private Personal selectedPersonal;
    private Comite selectedAsistente;

    /**
     * @return the btnModificar
     */
    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    /**
     * @param btnModificar the btnModificar to set
     */
    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    /**
     * @return the btnLimpiar
     */
    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    /**
     * @param btnLimpiar the btnLimpiar to set
     */
    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }
    
    public void valorar_action() {
        System.out.println("Va a valorar Aprendiz" + txtDocumento.getValue().toString());
        if (usuariosLogica.validarSesion()) {
            try {
                try {
                    Long documento = Long.parseLong(txtDocumento.getValue().toString());
                    Integer numeroseguimiento = Integer.parseInt(txtCodigo.getValue().toString());
                    SeguimientoAprendiz seguimientoAprendiz = new SeguimientoAprendiz();
                    seguimientoAprendiz.setDocumentoaprendiz(aprendizLogica.consultarPorId(documento));
                    seguimientoAprendiz.setNumeroseguimiento(seguimientoLogica.consultarPorNumero(numeroseguimiento));
                    seguimientoAprendiz.setEstrategiaseguimiento(txtEstrategias.getValue().toString());
                    seguimientoAprendiz.setRendimientoseguimiento(txtRendimiento.getValue().toString());
                    seguimientoAprendiz.setNumeronovedad(novedadLogica.consultarPorNumero(Integer.parseInt(cmbNovedad.getValue().toString())));
                    if (seguimientoAprendizLogica.consultarPorAprendiz(numeroseguimiento, documento) == null) {
                        System.out.println("No estaba?");
                        seguimientoAprendizLogica.registrar(seguimientoAprendiz);
                    } else {
                        System.out.println("Si estaba??");
                        seguimientoAprendizLogica.modificar(seguimientoAprendiz);
                    }
                    FacesContext.getCurrentInstance().addMessage("mensajes2", new FacesMessage(FacesMessage.SEVERITY_INFO, "Mensaje: ", "La valoración de Aprendiz se registró con Exito"));
                } catch (Exception e) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
                }
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            limpiar_actionA();
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void limpiar_action() {
        try {
            System.out.println("Limpiar");
            txtFecha.setValue(null);
            codigoSeguimiento = seguimientoLogica.generarCodigoSeguimiento();
            txtCodigo.setValue("");
            txtFicha.setValue("");
            txtJornada.setValue("");
            txtPrograma.setValue("");
            txtHora.setValue(null);
            cmbEstadoSeguimiento.setValue("PROGRAMADO");
            txtLugar.setValue("");
            txtFase.setValue("");
            txtCompetencias.setValue("");
            txtObservaciones.setValue("");
            btnModificar.setDisabled(true);
        } catch (Exception ex) {
            Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void limpiar_actionA() {
        try {
            System.out.println("Limpiar Info Aprendiz");
            txtDocumento.setValue("");
            txtNombreCompleto.setValue("");
            txtRendimiento.setValue("");
            txtEstrategias.setValue("");
            cmbNovedad.setValue("");
            btnModificarA.setDisabled(true);
        } catch (Exception ex) {
            Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void limpiar_actionAsistente() {
        try {
            System.out.println("Limpiar Info Personal");
            txtDocumento.setValue("");
            txtNombreCompleto.setValue("");
            cmbCargo.setValue("");
            btnRegistrarAsistente.setDisabled(true);
            btnRetirarAsistente.setDisabled(true);
        } catch (Exception ex) {
            Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void onRowSelectAprendiz(SelectEvent event) {        
        System.out.println("Selecciono un Aprendiz para Valorar");
        if (usuariosLogica.validarSesion()) {
            try {
                Aprendiz aprendiz = (Aprendiz) event.getObject();
                txtDocumento.setValue(aprendiz.getDocumento().getDocumento());
                txtNombreCompleto.setValue(aprendiz.getDocumento().getNombre() + " " + aprendiz.getDocumento().getApellido());
                Integer numeroseguimiento = Integer.parseInt(txtCodigo.getValue().toString());
                SeguimientoAprendiz seguimientoA = seguimientoAprendizLogica.consultarPorAprendiz(numeroseguimiento, aprendiz.getDocumento().getDocumento());
                if(seguimientoA!=null){
                    txtEstrategias.setValue(seguimientoA.getEstrategiaseguimiento());
                    txtRendimiento.setValue(seguimientoA.getRendimientoseguimiento());
                    cmbNovedad.setValue(seguimientoA.getNumeronovedad().getNumeronovedad());
                }
                btnModificarA.setDisabled(false);            
                btnLimpiarA.setDisabled(false);
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void onRowSelectSeguiA(SelectEvent event) {
        System.out.println("Selecciono un Seguimiento para Eliminar");
        if (usuariosLogica.validarSesion()) {
            try {
                Seguimiento seguimiento = (Seguimiento) event.getObject();
                SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
                Date fechaSegui = formato.parse(seguimiento.getFechaseguimiento());
                txtFecha.setValue(fechaSegui);
                txtCodigo.setValue(seguimiento.getCodigoseguimiento());
                codigoSeguimiento = seguimiento.getCodigoseguimiento() + "";
                SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
                System.out.println("Datos " + seguimiento.getHoraseguimiento());
                Date hora = dateFormat.parse(seguimiento.getHoraseguimiento());
                txtHora.setValue(hora);
                txtLugar.setValue(seguimiento.getLugarseguimiento());
                txtFicha.setValue(seguimiento.getFichaTitulacion().getFicha());
                txtJornada.setValue(seguimiento.getFichaTitulacion().getJornada());
                txtPrograma.setValue(seguimiento.getFichaTitulacion().getCodigoPrograma().getNombre());
                cmbEstadoSeguimiento.setValue(seguimiento.getEstadoseguimiento());
                txtFase.setValue(seguimiento.getFaseseguimiento());
                txtCompetencias.setValue(seguimiento.getCompetenciasseguimiento());
                txtObservaciones.setValue(seguimiento.getObsseguimiento());
                btnFinalizarSeguimiento.setDisabled(false);
            } catch (ParseException ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void onRowSelectPersonal(SelectEvent event) {
        if (usuariosLogica.validarSesion()) {
            try {
                Personal personal = (Personal) event.getObject();
                if(personal!=null){
                    txtDocumento.setValue(personal.getDocumento());
                    txtNombreCompleto.setValue(personal.getNombre()+" "+personal.getApellido());
                    Integer codS = Integer.parseInt(txtCodigo.getValue().toString());                
                    Comite comite = comiteLogica.consultarPorNumero(codS, personal.getDocumento());
                    if(comite!=null){
                        cmbCargo.setValue(comite.getCargo());
                        btnRegistrarAsistente.setDisabled(true);
                        btnRetirarAsistente.setDisabled(false);
                    }else{
                        cmbCargo.setDisabled(false);
                        btnRegistrarAsistente.setDisabled(false);
                        btnRetirarAsistente.setDisabled(true);
                    }
                }
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    public void onRowSelect(SelectEvent event) {
        System.out.println("Selecciono un Seguimiento para Eliminar");
        if (usuariosLogica.validarSesion()) {
            try {
                Seguimiento seguimiento = (Seguimiento) event.getObject();
                SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd");
                Date fechaSegui = formato.parse(seguimiento.getFechaseguimiento());
                txtFecha.setValue(fechaSegui);
                txtCodigo.setValue(seguimiento.getCodigoseguimiento());
                codigoSeguimiento = seguimiento.getCodigoseguimiento() + "";
                SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm");
                System.out.println("Datos " + seguimiento.getHoraseguimiento());
                Date hora = dateFormat.parse(seguimiento.getHoraseguimiento());
                txtHora.setValue(hora);
                txtLugar.setValue(seguimiento.getLugarseguimiento());
                txtFicha.setValue(seguimiento.getFichaTitulacion().getFicha());
                txtJornada.setValue(seguimiento.getFichaTitulacion().getJornada());
                txtPrograma.setValue(seguimiento.getFichaTitulacion().getCodigoPrograma().getNombre());
                cmbEstadoSeguimiento.setValue(seguimiento.getEstadoseguimiento());
                txtFase.setValue(seguimiento.getFaseseguimiento());
                txtCompetencias.setValue(seguimiento.getCompetenciasseguimiento());
                txtObservaciones.setValue(seguimiento.getObsseguimiento());
                btnModificar.setDisabled(false);
            } catch (ParseException ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void guardar_cambios_action() {
        System.out.println("Alistar Seguimiento");
        if (usuariosLogica.validarSesion()) {
            try {
                Integer codigoS = Integer.parseInt(txtCodigo.getValue().toString());
                //Modificar
                Seguimiento seguimiento = new Seguimiento();
                seguimiento.setCodigoseguimiento(codigoS);
                seguimiento.setEstadoseguimiento("ALISTADO");
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
                String fecha = format.format(txtFecha.getValue());
                seguimiento.setFechaseguimiento(fecha);
                SimpleDateFormat formath = new SimpleDateFormat("HH:mm");
                String hora = formath.format(txtHora.getValue());
                seguimiento.setHoraseguimiento(hora);
                seguimiento.setLugarseguimiento(txtLugar.getValue().toString());
                Integer fichat = Integer.parseInt(txtFicha.getValue().toString());
                seguimiento.setFichaTitulacion(fichaLogica.consultarPorId(fichat));
                seguimiento.setFaseseguimiento(txtFase.getValue().toString());
                seguimiento.setCompetenciasseguimiento(txtCompetencias.getValue().toString());
                seguimiento.setObsseguimiento(txtObservaciones.getValue().toString());
                seguimientoLogica.alistar(seguimiento);
                FacesContext.getCurrentInstance().addMessage("mensajes", new FacesMessage("El Seguimiento se Alisto con exito"));
            } catch (Exception e) {
                FacesContext.getCurrentInstance().addMessage("mensajes", new FacesMessage(e.getMessage()));
            }
            listaSeguimientos = null;
            //limpiar_action();
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * @return the txtHora
     */
    public Calendar getTxtHora() {
        return txtHora;
    }

    /**
     * @param txtHora the txtHora to set
     */
    public void setTxtHora(Calendar txtHora) {
        this.txtHora = txtHora;
    }

    /**
     * @return the txtLugar
     */
    public InputText getTxtLugar() {
        return txtLugar;
    }

    /**
     * @param txtLugar the txtLugar to set
     */
    public void setTxtLugar(InputText txtLugar) {
        this.txtLugar = txtLugar;
    }

    /**
     * @return the cmbEstadoSeguimiento
     */
    public SelectOneMenu getCmbEstadoSeguimiento() {
        return cmbEstadoSeguimiento;
    }

    /**
     * @param cmbEstadoSeguimiento the cmbEstadoSeguimiento to set
     */
    public void setCmbEstadoSeguimiento(SelectOneMenu cmbEstadoSeguimiento) {
        this.cmbEstadoSeguimiento = cmbEstadoSeguimiento;
    }

    /**
     * @return the selectedSeguimiento
     */
    public Seguimiento getSelectedSeguimiento() {
        return selectedSeguimiento;
    }

    /**
     * @param selectedSeguimiento the selectedSeguimiento to set
     */
    public void setSelectedSeguimiento(Seguimiento selectedSeguimiento) {
        this.selectedSeguimiento = selectedSeguimiento;
    }

    /**
     * @return the listaSeguimientos
     */
    public List<Seguimiento> getListaSeguimientos() {
        System.out.println("Actualiza tabla??");
        if (listaSeguimientos == null) {
            try {
                String userInstructor = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
                
                setListaSeguimientos(seguimientoLogica.consultarPorLider(Integer.parseInt(userInstructor)));
                System.out.println("lista seguimiento nueva " + listaSeguimientos.size());
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            System.out.println("Lista vacia");
        }
        return listaSeguimientos;
    }
    
    public List<Aprendiz> getListaAprendices() {
        System.out.println("Consultar Aprendices");
        if (listaAprendices == null) {
            try {
                if (!(txtFicha.getValue().toString().equals(""))) {
                    Integer ficha = Integer.parseInt(txtFicha.getValue().toString());                    
                    setListaAprendices(seguimientoLogica.consultarAprendicesPorFicha(ficha));
                }
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            System.out.println("Lista vacia");
        }
        return listaAprendices;
    }

    /**
     * @param listaSeguimientos the listaSeguimientos to set
     */
    public void setListaSeguimientos(List<Seguimiento> listaSeguimientos) {
        this.listaSeguimientos = listaSeguimientos;
    }

    /**
     * @return the txtFicha
     */
    public InputText getTxtFicha() {
        return txtFicha;
    }

    /**
     * @param txtFicha the txtFicha to set
     */
    public void setTxtFicha(InputText txtFicha) {
        this.txtFicha = txtFicha;
    }

    /**
     * @return the txtCodigo
     */
    public InputText getTxtCodigo() {
        return txtCodigo;
    }

    /**
     * @param txtCodigo the txtCodigo to set
     */
    public void setTxtCodigo(InputText txtCodigo) {
        this.txtCodigo = txtCodigo;
    }

    /**
     * @return the codigoSeguimiento
     */
    public String getCodigoSeguimiento() {
        return codigoSeguimiento;
    }

    /**
     * @param codigoSeguimiento the codigoSeguimiento to set
     */
    public void setCodigoSeguimiento(String codigoSeguimiento) {
        this.codigoSeguimiento = codigoSeguimiento;
    }

    /**
     * @return the txtJornada
     */
    public InputText getTxtJornada() {
        return txtJornada;
    }

    /**
     * @param txtJornada the txtJornada to set
     */
    public void setTxtJornada(InputText txtJornada) {
        this.txtJornada = txtJornada;
    }

    /**
     * @return the txtPrograma
     */
    public InputTextarea getTxtPrograma() {
        return txtPrograma;
    }

    /**
     * @param txtPrograma the txtPrograma to set
     */
    public void setTxtPrograma(InputTextarea txtPrograma) {
        this.txtPrograma = txtPrograma;
    }

    /**
     * @return the txtFecha
     */
    public Calendar getTxtFecha() {
        return txtFecha;
    }

    /**
     * @param txtFecha the txtFecha to set
     */
    public void setTxtFecha(Calendar txtFecha) {
        this.txtFecha = txtFecha;
    }

    /**
     * @return the txtFase
     */
    public InputTextarea getTxtFase() {
        return txtFase;
    }

    /**
     * @param txtFase the txtFase to set
     */
    public void setTxtFase(InputTextarea txtFase) {
        this.txtFase = txtFase;
    }

    /**
     * @return the txtCompetencias
     */
    public InputTextarea getTxtCompetencias() {
        return txtCompetencias;
    }

    /**
     * @param txtCompetencias the txtCompetencias to set
     */
    public void setTxtCompetencias(InputTextarea txtCompetencias) {
        this.txtCompetencias = txtCompetencias;
    }

    /**
     * @return the txtObservaciones
     */
    public InputTextarea getTxtObservaciones() {
        return txtObservaciones;
    }

    /**
     * @param txtObservaciones the txtObservaciones to set
     */
    public void setTxtObservaciones(InputTextarea txtObservaciones) {
        this.txtObservaciones = txtObservaciones;
    }

    /**
     * @param listaAprendices the listaAprendices to set
     */
    public void setListaAprendices(List<Aprendiz> listaAprendices) {
        this.listaAprendices = listaAprendices;
    }

    /**
     * @return the selectedAprendiz
     */
    public Aprendiz getSelectedAprendiz() {
        return selectedAprendiz;
    }

    /**
     * @param selectedAprendiz the selectedAprendiz to set
     */
    public void setSelectedAprendiz(Aprendiz selectedAprendiz) {
        this.selectedAprendiz = selectedAprendiz;
    }

    /**
     * @return the txtDocumento
     */
    public InputText getTxtDocumento() {
        return txtDocumento;
    }

    /**
     * @param txtDocumento the txtDocumento to set
     */
    public void setTxtDocumento(InputText txtDocumento) {
        this.txtDocumento = txtDocumento;
    }

    /**
     * @return the txtNombre
     */
    public InputText getTxtNombre() {
        return txtNombre;
    }

    /**
     * @param txtNombre the txtNombre to set
     */
    public void setTxtNombre(InputText txtNombre) {
        this.txtNombre = txtNombre;
    }

    /**
     * @return the txtApellido
     */
    public InputText getTxtApellido() {
        return txtApellido;
    }

    /**
     * @param txtApellido the txtApellido to set
     */
    public void setTxtApellido(InputText txtApellido) {
        this.txtApellido = txtApellido;
    }

    /**
     * @return the txtRendimiento
     */
    public InputTextarea getTxtRendimiento() {
        return txtRendimiento;
    }

    /**
     * @param txtRendimiento the txtRendimiento to set
     */
    public void setTxtRendimiento(InputTextarea txtRendimiento) {
        this.txtRendimiento = txtRendimiento;
    }

    /**
     * @return the txtEstrategias
     */
    public InputTextarea getTxtEstrategias() {
        return txtEstrategias;
    }

    /**
     * @param txtEstrategias the txtEstrategias to set
     */
    public void setTxtEstrategias(InputTextarea txtEstrategias) {
        this.txtEstrategias = txtEstrategias;
    }

    /**
     * @return the cmbNovedad
     */
    public SelectOneMenu getCmbNovedad() {
        return cmbNovedad;
    }

    /**
     * @param cmbNovedad the cmbNovedad to set
     */
    public void setCmbNovedad(SelectOneMenu cmbNovedad) {
        this.cmbNovedad = cmbNovedad;
    }

    /**
     * @return the txtNombreCompleto
     */
    public InputText getTxtNombreCompleto() {
        return txtNombreCompleto;
    }

    /**
     * @param txtNombreCompleto the txtNombreCompleto to set
     */
    public void setTxtNombreCompleto(InputText txtNombreCompleto) {
        this.txtNombreCompleto = txtNombreCompleto;
    }

    /**
     * @return the btnModificarA
     */
    public CommandButton getBtnModificarA() {
        return btnModificarA;
    }

    /**
     * @param btnModificarA the btnModificarA to set
     */
    public void setBtnModificarA(CommandButton btnModificarA) {
        this.btnModificarA = btnModificarA;
    }

    /**
     * @return the btnLimpiarA
     */
    public CommandButton getBtnLimpiarA() {
        return btnLimpiarA;
    }

    /**
     * @param btnLimpiarA the btnLimpiarA to set
     */
    public void setBtnLimpiarA(CommandButton btnLimpiarA) {
        this.btnLimpiarA = btnLimpiarA;
    }

    /**
     * @return the itemsnovedades
     */
    public ArrayList<SelectItem> getItemsnovedades() {
        if (itemsnovedades == null) {
            itemsnovedades = new ArrayList<SelectItem>();
            List<Novedad> lista;
            try {
                lista = novedadLogica.consultar(); //llama al factory
                for (int i = 0; i < lista.size(); i++) {
                    itemsnovedades.add(new SelectItem(lista.get(i).getNumeronovedad(), lista.get(i).getNombrenovedad()));
                }
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        return itemsnovedades;
    }

    /**
     * @param itemsnovedades the itemsnovedades to set
     */
    public void setItemsnovedades(ArrayList<SelectItem> itemsnovedades) {
        this.itemsnovedades = itemsnovedades;
    }

    /**
     * @return the cmbCargo
     */
    public SelectOneMenu getCmbCargo() {
        return cmbCargo;
    }

    /**
     * @param cmbCargo the cmbCargo to set
     */
    public void setCmbCargo(SelectOneMenu cmbCargo) {
        this.cmbCargo = cmbCargo;
    }

    /**
     * @return the btnRegistrarAsistente
     */
    public CommandButton getBtnRegistrarAsistente() {
        return btnRegistrarAsistente;
    }

    /**
     * @param btnRegistrarAsistente the btnRegistrarAsistente to set
     */
    public void setBtnRegistrarAsistente(CommandButton btnRegistrarAsistente) {
        this.btnRegistrarAsistente = btnRegistrarAsistente;
    }

    /**
     * @return the btnRetirarAsistente
     */
    public CommandButton getBtnRetirarAsistente() {
        return btnRetirarAsistente;
    }

    /**
     * @param btnRetirarAsistente the btnRetirarAsistente to set
     */
    public void setBtnRetirarAsistente(CommandButton btnRetirarAsistente) {
        this.btnRetirarAsistente = btnRetirarAsistente;
    }

    /**
     * @return the btnLimpiarAsistente
     */
    public CommandButton getBtnLimpiarAsistente() {
        return btnLimpiarAsistente;
    }

    /**
     * @param btnLimpiarAsistente the btnLimpiarAsistente to set
     */
    public void setBtnLimpiarAsistente(CommandButton btnLimpiarAsistente) {
        this.btnLimpiarAsistente = btnLimpiarAsistente;
    }

    /**
     * @return the btnSeleccionarAsistente
     */
    public CommandButton getBtnSeleccionarAsistente() {
        return btnSeleccionarAsistente;
    }

    /**
     * @param btnSeleccionarAsistente the btnSeleccionarAsistente to set
     */
    public void setBtnSeleccionarAsistente(CommandButton btnSeleccionarAsistente) {
        this.btnSeleccionarAsistente = btnSeleccionarAsistente;
    }

    /**
     * @return the listaComite
     */
    public List<Comite> getListaComite() {
        System.out.println("Consultar Comite Seguimiento");
        if (listaComite == null) {
            try {
                    Integer codigoS = Integer.parseInt(txtCodigo.getValue().toString());
                    setListaComite(comiteLogica.consultar(codigoS));
                
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            System.out.println("Lista vacia");
        }
        return listaComite;
    }

    /**
     * @param listaComite the listaComite to set
     */
    public void setListaComite(List<Comite> listaComite) {
        this.listaComite = listaComite;
    }

    /**
     * @return the listaPersonal
     */
    public List<Personal> getListaPersonal() {
        System.out.println("Consultar Personal");
        if (listaPersonal == null) {
            try {   
                    setListaPersonal(personalLogica.consultar());
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            System.out.println("Lista vacia");
        }
        return listaPersonal;
    }

    /**
     * @param listaPersonal the listaPersonal to set
     */
    public void setListaPersonal(List<Personal> listaPersonal) {
        this.listaPersonal = listaPersonal;
    }

    /**
     * @return the selectedPersonal
     */
    public Personal getSelectedPersonal() {
        return selectedPersonal;
    }

    /**
     * @param selectedPersonal the selectedPersonal to set
     */
    public void setSelectedPersonal(Personal selectedPersonal) {
        this.selectedPersonal = selectedPersonal;
    }

    /**
     * @return the selectedAsistente
     */
    public Comite getSelectedAsistente() {
        return selectedAsistente;
    }

    /**
     * @param selectedAsistente the selectedAsistente to set
     */
    public void setSelectedAsistente(Comite selectedAsistente) {
        this.selectedAsistente = selectedAsistente;
    }

    /**
     * @return the listaSeguimientosA
     */
    public List<Seguimiento> getListaSeguimientosA() {
        if (listaSeguimientosA == null) {
            try {
                String userInstructor = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("usuario");
                
                setListaSeguimientosA(seguimientoLogica.consultarAlistadosPorLider(Integer.parseInt(userInstructor)));
                //System.out.println("lista seguimiento nueva " + listaSeguimientos.size());
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            System.out.println("Lista vacia");
        }
        return listaSeguimientosA;
    }

    /**
     * @param listaSeguimientosA the listaSeguimientosA to set
     */
    public void setListaSeguimientosA(List<Seguimiento> listaSeguimientosA) {
        this.listaSeguimientosA = listaSeguimientosA;
    }
    
    public void registrar_action_asistente() {
        System.out.println("Va a registrar Asistente" + txtDocumento.getValue().toString());
        if (usuariosLogica.validarSesion()) {
            try {
                try {
                    Long documento = Long.parseLong(txtDocumento.getValue().toString());
                    Integer numeroseguimiento = Integer.parseInt(txtCodigo.getValue().toString());
                    String cargo = cmbCargo.getValue().toString();
                    Comite comiteS = new Comite();
                    comiteS.setDocumentoPersonal(personalLogica.consultarPorId(documento));
                    comiteS.setNumeroSeguimiento(seguimientoLogica.consultarPorNumero(numeroseguimiento));
                    comiteS.setCargo(cargo);
                    if (comiteLogica.consultarPorNumero(numeroseguimiento, documento) == null) {
                        System.out.println("No estaba?");
                        comiteLogica.registrar(comiteS);
                    } else {
                        System.out.println("Si estaba??");
                        comiteLogica.modificar(comiteS);
                    }
                    FacesContext.getCurrentInstance().addMessage("mensajes2", new FacesMessage(FacesMessage.SEVERITY_INFO, "Mensaje: ", "Se asigno el asistente con Exito"));
                } catch (Exception e) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
                }
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            limpiar_actionAsistente();
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    
    public void retirar_action_asistente() {
        System.out.println("Va a retirar Asistente" + txtDocumento.getValue().toString());
        if (usuariosLogica.validarSesion()) {
            try {
                try {
                    Long documento = Long.parseLong(txtDocumento.getValue().toString());
                    Integer numeroseguimiento = Integer.parseInt(txtCodigo.getValue().toString());
                    String cargo = cmbCargo.getValue().toString();
                    Comite comiteS = new Comite();
                    comiteS.setDocumentoPersonal(personalLogica.consultarPorId(documento));
                    comiteS.setNumeroSeguimiento(seguimientoLogica.consultarPorNumero(numeroseguimiento));
                    comiteS.setCargo(cargo);
                    comiteLogica.retirar(comiteS);
                    FacesContext.getCurrentInstance().addMessage("mensajes2", new FacesMessage(FacesMessage.SEVERITY_INFO, "Mensaje: ", "Se retiro el asistente con Exito"));
                } catch (Exception e) {
                    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error: ", e.getMessage()));
                }
            } catch (Exception ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
            limpiar_actionAsistente();
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(CoordinadorVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     * @return the btnFinalizarSeguimiento
     */
    public CommandButton getBtnFinalizarSeguimiento() {
        return btnFinalizarSeguimiento;
    }

    /**
     * @param btnFinalizarSeguimiento the btnFinalizarSeguimiento to set
     */
    public void setBtnFinalizarSeguimiento(CommandButton btnFinalizarSeguimiento) {
        this.btnFinalizarSeguimiento = btnFinalizarSeguimiento;
    }
    
    public void finalizar_seguimiento_action() {
        System.out.println("ejecutar finalizar Seguimiento");
        if (usuariosLogica.validarSesion()) {
            try {
                Integer codigoS = Integer.parseInt(txtCodigo.getValue().toString());
                //Modificar
                Seguimiento seguimiento = new Seguimiento();
                seguimiento.setCodigoseguimiento(codigoS);
                seguimiento.setEstadoseguimiento("EJECUTADO");
               
                seguimientoLogica.alistar(seguimiento);
                FacesContext.getCurrentInstance().addMessage("mensajes", new FacesMessage("El Seguimiento Finalizó con exito. En la opción de Reportes podrá descargar el Acta y las Novedades"));
            } catch (Exception e) {
                FacesContext.getCurrentInstance().addMessage("mensajes", new FacesMessage(e.getMessage()));
            }
            listaSeguimientos = null;
            //limpiar_action();
        } else {
            try {
                FacesContext.getCurrentInstance().getExternalContext().redirect("../SesionInvalida.xhtml");
            } catch (IOException ex) {
                Logger.getLogger(AdelantarSeguimientoVista.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}
